package day_2022_1_to_2.day16;

//2、一个整型数组里除了两个数字之外，其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

import java.util.NoSuchElementException;
import java.util.Scanner;

public class Day6_2 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入元素个数(必为偶数):");
        int a=scanner.nextInt();
        if(a%2!=0){
            throw new NoSuchElementException("根据题义，元素应为偶数，且除了两个数字之外，其他的数字都出现了两次");
        }
        int[] arr=new int[a];
        System.out.println("请输入元素：");
        for (int i = 0; i < arr.length; i++) {
            arr[i]=scanner.nextInt();
        }
        int[] arr1=findNumberAppearOnce(arr);
        printArray(arr1);
    }

    //打印数组
    private static void printArray(int[] arr1) {
        System.out.print("[");
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i]);
            if(i!=arr1.length-1){
                System.out.print(",");
            }

        }
        System.out.println("]");
    }

    //找到这两个只出现一次的数字
    public static int[] findNumberAppearOnce(int[] arr) {
        int[] arr1=new int[2];
        int c=0;
        for (int i = 0; i < arr.length; i++) {
            int a=0;
            for (int j = 0; j <arr.length; j++) {
                if(arr[i]==arr[j]&&i!=j){
                    a++;
                }
            }
            if(a!=1){
                c++;
                //出现了第一个只出现一次的数字
                if(c==1){
                    arr1[0]=arr[i];
                }
                //出现了第二个只出现一次的数字
                else {
                    arr1[1]=arr[i];
                }
            }
        }
        return arr1;
    }
}
